package com.bdqn.t382.pojo;

import java.lang.reflect.Field;

public class AccessPersonFields {
    public static void main(String[] args) {
        try {
            Class cls = Class.forName("com.bdqn.t382.pojo.Person");
            // Person 的无参构造为 public，这里可以直接访问
            Object person = cls.newInstance();
            // 通过构造方法／属性／方法实例调用
            // 获取 private String name 属性
            Field name = cls.getDeclaredField("name");
            // name 属性为 private，这里已超出其访问范围，不能直接访问
            // 通过 setAccessable 方法，设定为可以访问
            name.setAccessible(true);
            // 先取值看一下
            System.out.println("赋值前的name：" + name.get(person));
            // 为 name 属性赋值
            name.set(person, "New Person");
            // 展示一下赋值效果
            System.out.println("赋值后的name：" + name.get(person));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
